package com.example.annotation;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class GetAnnotion2 {
        public static void main(String[] args) throws ClassCastException, InstantiationException, IllegalAccessException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException {
            Class<User> userClass = User.class;
            // 通过 Class 对象构造真实类 User 的对象
            User user = (User) userClass.newInstance();
            // 获取指定方法 "setName"，该方法接受一个 String 类型的参数
            Method setName = userClass.getDeclaredMethod("setName", String.class);
            // 通过反射调用 setName 方法，设置用户对象的名字为 "zhangsan"
            setName.invoke(user, "zhangsan");
            // 输出用户对象的名字，验证反射调用是否成功
            System.out.println(user.getName());

            System.out.println("====================");
            Field age = userClass.getDeclaredField("age");
            age.setAccessible(true);
            // 通过反射设置用户对象的年龄为 18
            age.set(user, 18);
            // 输出用户对象的年龄，验证反射设置是否成功
            System.out.println(user.getAge());
        }
    }
/*
Output :
zhangsan
====================
18
*/